package org.example.entity;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;

import java.time.LocalDateTime;

/**
 * 短链接实体类
 * 对应数据库中的short_url表
 * 
 * @author Your Name
 * @since 2024-07-01
 */
@Data  // Lombok注解：自动生成getter、setter、toString、equals、hashCode方法
@NoArgsConstructor  // Lombok注解：生成无参构造函数
@AllArgsConstructor  // Lombok注解：生成全参构造函数
@Builder  // Lombok注解：生成建造者模式，用于链式创建对象
public class ShortUrl {
    
    /**
     * 主键ID，数据库自增
     */
    private Long id;
    
    /**
     * 短链接编码（8位），唯一标识
     * 例如：abc12345
     */
    private String shortCode;
    
    /**
     * 原始长链接，用户输入的完整URL
     * 例如：https://www.example.com/very-long-url
     */
    private String originalUrl;
    
    /**
     * 访问次数，记录该短链接被点击的次数
     * 初始值为0
     */
    private Long accessCount;
    
    /**
     * 状态：1-启用，0-禁用
     * 1表示短链接可以正常使用，0表示短链接已被禁用
     */
    private Integer status;
    
    /**
     * 过期时间，可以为null表示永不过期
     * 超过此时间的短链接将无法访问
     */
    private LocalDateTime expireTime;
    
    /**
     * 创建时间，记录短链接生成的时间
     * 数据库自动设置，不可修改
     */
    private LocalDateTime createdTime;
    
    /**
     * 更新时间，记录短链接最后修改的时间
     * 数据库自动更新
     */
    private LocalDateTime updatedTime;
}
